Make any_cast<void()>(nullptr) compile git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284333 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/any b/include/any index 7f2cf1e..229daca 100644 --- a/include/any +++ b/include/any 
@@ -622,6 +622,18 @@  return _VSTD::any_cast<_ValueType>(const_cast<any *>(__any));  }   +template <class _RetType> +inline _LIBCPP_INLINE_VISIBILITY +_RetType __pointer_or_func_cast(void* __p, /*IsFunction*/false_type) noexcept { + return static_cast<_RetType>(__p); +} + +template <class _RetType> +inline _LIBCPP_INLINE_VISIBILITY +_RetType __pointer_or_func_cast(void*, /*IsFunction*/true_type) noexcept { + return nullptr; +} +  template <class _ValueType>  add_pointer_t<_ValueType>  any_cast(any * __any) _NOEXCEPT @@ -631,15 +643,15 @@  "_ValueType may not be a reference.");  typedef typename add_pointer<_ValueType>::type _ReturnType;  if (__any && __any->__h) { - return static_cast<_ReturnType>( - __any->__call(_Action::_Get, nullptr, + void *__p = __any->__call(_Action::_Get, nullptr,  #if !defined(_LIBCPP_NO_RTTI)  &typeid(_ValueType),  #else  nullptr,  #endif - __any_imp::__get_fallback_typeid<_ValueType>() - )); + __any_imp::__get_fallback_typeid<_ValueType>()); + return _VSTD::__pointer_or_func_cast<_ReturnType>( + __p, is_function<_ValueType>{});  }  return nullptr;  }